Skip to content

Conversation

@JonathanBrouwer
Copy link
Contributor

Successful merges:

r? @ghost

Create a similar rollup

TaKO8Ki and others added 30 commits January 2, 2026 16:01
There's no sensible recovery scheme here, giving up the recovery is the
right thing to do.
Previously, these failed to resolve, despite them working for struct
fields or enum variants that were behind aliases.

However, there is now an inconsistency where enum variant fields behind
an alias resolve to the entry on the alias's page, while enum variants
and struct fields resolve to the page of the backing ADT.
The old name and API were confusing. In my opinion, looking up the type
at the call site is clearer.
All the other parts of this function return the Res for the containing
page, but for some reason, this returns the associated item itself. It
doesn't seem to affect the behavior of rustdoc because e.g. the href
functions use the parent if the DefId is for an assoc item. But it's
clearer and simpler to be consistent.
Otherwise eiis defined by std will produce large amounts of `missing
stability attribute` errors.
target_arch for powerpc64le- targets is "powerpc64".
Recent changes made WASI targets use the Unix threading implementation, but
WASI does not support threading. When the Unix code tries to call
pthread_create, it fails with EAGAIN, causing libraries like rayon to
panic when trying to initialize their global thread pool.

This fix adds an early return in Thread::new() that checks for WASI and
returns UNSUPPORTED_PLATFORM. This approach:
- Continues using most of the unix.rs code path (less invasive)
- Only requires a small cfg check at the start of Thread::new()
- Can be easily removed once wasi-sdk is updated with the proper fix

The real fix is being tracked in `WebAssembly/wasi-libc#716` which will
change the error code returned by pthread_create to properly indicate
unsupported operations. Once that propagates to wasi-sdk, this workaround
can be removed.

Fixes the regression where rayon-based code (e.g., lopdf in PDF handling)
panicked on WASI after nightly-2025-12-10.

Before fix:
  pthread_create returns EAGAIN (error code 6)
  ThreadPoolBuildError { kind: IOError(Os { code: 6,
  kind: WouldBlock, message: "Resource temporarily unavailable" }) }

After fix:
  Thread::new returns Err(io::Error::UNSUPPORTED_PLATFORM)
  Libraries can gracefully handle the lack of threading support
The opposite ordering was a consistent source of confusion during debuggingю
`report_conflict` actually used an incorrect order due to similar confusion.
Also avoid losing some glob ambiguities when re-fetching globs
When a const param doesn't have a `: Type`, recover the parser state and provide a structured suggestion. This not only provides guidance on what was missing, but it also makes subsuequent errors to be emitted that would otherwise be silenced.

```
error: expected `:`, found `>`
  --> $DIR/incorrect-const-param.rs:26:16
   |
LL | impl<T, const N> From<[T; N]> for VecWrapper<T>
   |                ^ expected `:`
   |
help: you might have meant to write the type of the const parameter here
   |
LL | impl<T, const N: /* Type */> From<[T; N]> for VecWrapper<T>
   |                ++++++++++++
```
@rustbot rustbot added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. T-bootstrap Relevant to the bootstrap subteam: Rust's build system (x.py and src/bootstrap) T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. T-infra Relevant to the infrastructure team, which will review and decide on the PR/issue. T-libs Relevant to the library team, which will review and decide on the PR/issue. T-rustdoc Relevant to the rustdoc team, which will review and decide on the PR/issue. T-rustdoc-frontend Relevant to the rustdoc-frontend team, which will review and decide on the web UI/UX output. labels Jan 14, 2026
@JonathanBrouwer
Copy link
Contributor Author

@bors r+ rollup=never p=5

@rust-bors rust-bors bot added S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Jan 14, 2026
@rust-bors
Copy link
Contributor

rust-bors bot commented Jan 14, 2026

📌 Commit 4523c2e has been approved by JonathanBrouwer

It is now in the queue for this repository.

@rust-bors

This comment has been minimized.

@rust-bors rust-bors bot added merged-by-bors This PR was explicitly merged by bors. and removed S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. labels Jan 15, 2026
@rust-bors
Copy link
Contributor

rust-bors bot commented Jan 15, 2026

☀️ Test successful - CI
Approved by: JonathanBrouwer
Pushing b6fdaf2 to main...

@rust-bors rust-bors bot merged commit b6fdaf2 into rust-lang:main Jan 15, 2026
12 checks passed
@rustbot rustbot added this to the 1.94.0 milestone Jan 15, 2026
@github-actions
Copy link
Contributor

What is this? This is an experimental post-merge analysis report that shows differences in test outcomes between the merged PR and its parent PR.

Comparing 86a49fd (parent) -> b6fdaf2 (this PR)

Test differences

Show 52 test diffs

Stage 0

  • errors::verify_builtin_macros_eii_only_once_96: pass -> [missing] (J0)
  • errors::verify_builtin_macros_eii_only_once_97: [missing] -> pass (J0)
  • errors::verify_builtin_macros_eii_shared_macro_expected_max_one_argument_97: pass -> [missing] (J0)
  • errors::verify_builtin_macros_eii_shared_macro_expected_max_one_argument_98: [missing] -> pass (J0)
  • errors::verify_builtin_macros_eii_shared_macro_in_statement_position_96: [missing] -> pass (J0)

Stage 1

  • [rustdoc-html] tests/rustdoc-html/intra-doc/adt-through-alias.rs: [missing] -> pass (J0)
  • [ui] tests/ui/const-generics/incorrect-const-param.rs: [missing] -> pass (J0)
  • [ui] tests/ui/const-generics/mgca/tuple_expr_arg_bad-issue-151048.rs: [missing] -> pass (J0)
  • [ui] tests/ui/generics/wrong-number-of-args-in-macro.rs: [missing] -> pass (J0)
  • [ui] tests/ui/imports/overwrite-deep-glob.rs: [missing] -> pass (J0)
  • [ui] tests/ui/imports/overwrite-different-ambig-2.rs: [missing] -> pass (J0)
  • [ui] tests/ui/imports/overwrite-different-ambig.rs: [missing] -> pass (J0)
  • [ui] tests/ui/imports/overwrite-different-vis.rs: [missing] -> pass (J0)
  • [ui] tests/ui/imports/overwrite-different-warn-ambiguity.rs: [missing] -> pass (J0)
  • [ui] tests/ui/parser/macro/kw-in-const-item-pos-recovery-149692.rs: [missing] -> pass (J0)
  • [ui] tests/ui/parser/macro/kw-in-item-pos-recovery-149692.rs: [missing] -> pass (J0)
  • errors::verify_builtin_macros_eii_only_once_96: pass -> [missing] (J2)
  • errors::verify_builtin_macros_eii_only_once_97: [missing] -> pass (J2)
  • errors::verify_builtin_macros_eii_shared_macro_expected_max_one_argument_97: pass -> [missing] (J2)
  • errors::verify_builtin_macros_eii_shared_macro_expected_max_one_argument_98: [missing] -> pass (J2)
  • errors::verify_builtin_macros_eii_shared_macro_in_statement_position_96: [missing] -> pass (J2)

Stage 2

  • [ui] tests/ui/const-generics/incorrect-const-param.rs: [missing] -> pass (J1)
  • [ui] tests/ui/const-generics/mgca/tuple_expr_arg_bad-issue-151048.rs: [missing] -> pass (J1)
  • [ui] tests/ui/generics/wrong-number-of-args-in-macro.rs: [missing] -> pass (J1)
  • [ui] tests/ui/imports/overwrite-deep-glob.rs: [missing] -> pass (J1)
  • [ui] tests/ui/imports/overwrite-different-ambig-2.rs: [missing] -> pass (J1)
  • [ui] tests/ui/imports/overwrite-different-ambig.rs: [missing] -> pass (J1)
  • [ui] tests/ui/imports/overwrite-different-vis.rs: [missing] -> pass (J1)
  • [ui] tests/ui/imports/overwrite-different-warn-ambiguity.rs: [missing] -> pass (J1)
  • [ui] tests/ui/parser/macro/kw-in-const-item-pos-recovery-149692.rs: [missing] -> pass (J1)
  • [ui] tests/ui/parser/macro/kw-in-item-pos-recovery-149692.rs: [missing] -> pass (J1)
  • [rustdoc-html] tests/rustdoc-html/intra-doc/adt-through-alias.rs: [missing] -> pass (J3)

Additionally, 20 doctest diffs were found. These are ignored, as they are noisy.

Job group index

Test dashboard

Run

cargo run --manifest-path src/ci/citool/Cargo.toml -- \
    test-dashboard b6fdaf2a15736cbccf248b532f48e33179614d40 --output-dir test-dashboard

And then open test-dashboard/index.html in your browser to see an overview of all executed tests.

Job duration changes

  1. aarch64-apple: 11396.2s -> 7934.2s (-30.4%)
  2. x86_64-rust-for-linux: 2522.7s -> 3162.4s (+25.4%)
  3. dist-x86_64-apple: 9840.2s -> 8075.7s (-17.9%)
  4. i686-gnu-nopt-1: 6865.4s -> 7969.9s (+16.1%)
  5. x86_64-gnu-aux: 6573.9s -> 7589.0s (+15.4%)
  6. pr-check-1: 1738.5s -> 1997.5s (+14.9%)
  7. x86_64-gnu-llvm-21-2: 5115.0s -> 5860.7s (+14.6%)
  8. x86_64-gnu-distcheck: 7188.2s -> 8134.5s (+13.2%)
  9. aarch64-gnu-llvm-20-2: 2796.4s -> 3163.4s (+13.1%)
  10. x86_64-gnu-debug: 8410.0s -> 7309.9s (-13.1%)
How to interpret the job duration changes?

Job durations can vary a lot, based on the actual runner instance
that executed the job, system noise, invalidated caches, etc. The table above is provided
mostly for t-infra members, for simpler debugging of potential CI slow-downs.

@rust-timer
Copy link
Collaborator

📌 Perf builds for each rolled up PR:

PR# Message Perf Build Sha
#150585 Add a context-consistency check before emitting redundant g… 2ec5ccef78b8e15f696af59dee1fd1042637b31d (link)
#150586 rustdoc: Fix intra-doc link bugs involving type aliases and… 8fca564677dfc3130280e7cb98f2083063d0e5b9 (link)
#150590 Don't try to recover keyword as non-keyword identifier 2f15b9280a456bb7f6d0266befeabf10b9783423 (link)
#150817 cleanup: remove borrowck handling for inline const patterns 2603b62f96cbc9876d2e9525bd2ecaefc1ebd7c7 (link)
#150939 resolve: Relax some asserts in glob overwriting and add tes… 9ef32d603dc3c3e8cbeb84687d5916011aa02a43 (link)
#150962 Remove FeedConstTy and provide ty when lowering const arg 8ea72d4988a359ba48641ca81b9ec044007c9a99 (link)
#150966 rustc_target: Remove unused Arch::PowerPC64LE 13bc781baf20b19427569419a580bb9cd43bed4b (link)
#150971 Disallow eii in statement position a4cc3cb979fc0066f42909ea6bf7af662103e1ba (link)
#151016 fix: WASI threading regression by disabling pthread usage 9817fdf77ffa7ef78fd5aaa05e29f6b0cba2bd8b (link)
#151046 compiler: Make Externally Implementable Item (eii) macros "… fc26eebef7319d12c74476feefee2ada856c8c9a (link)
#151099 Recover parse gracefully from <const N> e50e1aa8a032d0e0f5d011ee3a20f86fb6db820d (link)
#151117 Avoid serde dependency in build_helper when not necessary 8fe456e31b50998dfb68221c960233f5c0aeb50a (link)
#151127 Delete MetaItemOrLitParser::Err aa09cdeda7a16ea399b024ed2b45236c98a67b3d (link)
#151128 Add temporary new bors e-mail address to the mailmap dce1ee8c054926da96cb1d333e8c586a5d0cd74d (link)
#151138 Rename rust.use-lld to rust.bootstrap-override-lld in I… 848591a985e91afebbfe19a53b121699ca554e46 (link)

previous master: 86a49fd71f

In the case of a perf regression, run the following command for each PR you suspect might be the cause: @rust-timer build $SHA

@rust-timer
Copy link
Collaborator

Finished benchmarking commit (b6fdaf2): comparison URL.

Overall result: ❌ regressions - please read the text below

Our benchmarks found a performance regression caused by this PR.
This might be an actual regression, but it can also be just noise.

Next Steps:

  • If the regression was expected or you think it can be justified,
    please write a comment with sufficient written justification, and add
    @rustbot label: +perf-regression-triaged to it, to mark the regression as triaged.
  • If you think that you know of a way to resolve the regression, try to create
    a new PR with a fix for the regression.
  • If you do not understand the regression or you think that it is just noise,
    you can ask the @rust-lang/wg-compiler-performance working group for help (members of this group
    were already notified of this PR).

@rustbot label: +perf-regression
cc @rust-lang/wg-compiler-performance

Instruction count

Our most reliable metric. Used to determine the overall result above. However, even this metric can be noisy.

mean range count
Regressions ❌
(primary)
- - 0
Regressions ❌
(secondary)
1.3% [0.5%, 2.1%] 6
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
- - 0
All ❌✅ (primary) - - 0

Max RSS (memory usage)

This benchmark run did not return any relevant results for this metric.

Cycles

This benchmark run did not return any relevant results for this metric.

Binary size

This benchmark run did not return any relevant results for this metric.

Bootstrap: 475.838s -> 475.873s (0.01%)
Artifact size: 383.64 MiB -> 383.65 MiB (0.00%)

@rustbot rustbot added the perf-regression Performance regression. label Jan 15, 2026
@JonathanBrouwer
Copy link
Contributor Author

@rustbot label: +perf-regression-triaged
Regression is #150962 (comment)

@rustbot rustbot added the perf-regression-triaged The performance regression has been triaged. label Jan 15, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

A-attributes Area: Attributes (`#[…]`, `#![…]`) A-CI Area: Our Github Actions CI A-LLVM Area: Code generation parts specific to LLVM. Both correctness bugs and optimization-related issues. A-meta Area: Issues & PRs about the rust-lang/rust repository itself A-testsuite Area: The testsuite used to check the correctness of rustc merged-by-bors This PR was explicitly merged by bors. perf-regression Performance regression. perf-regression-triaged The performance regression has been triaged. rollup A PR which is a rollup T-bootstrap Relevant to the bootstrap subteam: Rust's build system (x.py and src/bootstrap) T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. T-infra Relevant to the infrastructure team, which will review and decide on the PR/issue. T-libs Relevant to the library team, which will review and decide on the PR/issue. T-rustdoc Relevant to the rustdoc team, which will review and decide on the PR/issue. T-rustdoc-frontend Relevant to the rustdoc-frontend team, which will review and decide on the web UI/UX output.

Projects

None yet

Development

Successfully merging this pull request may close these issues.